package org.zxyj.manage.service;

import java.util.List;
import java.util.Map;

import org.zxyj.core.entity.Pagination;
import org.zxyj.manage.entity.CourseTemplate;
import org.zxyj.manage.entity.CourseTemplateArea;
import org.zxyj.manage.entity.CourseTemplateTmxx;

/**
 * 课程模板接口
    * @ClassName: ICourseTemplateService
    * @author liuyong
    * @date 2016年7月8日
 */
public interface ICourseTemplateService {
	
	/**
	 * 根据条件查询实体数据-不分页
	 * 
	 * @param criteria
	 * @return List<Template>
	 */
	List<CourseTemplate> listEntities(Map<String, Object> criteria);

	/**
	 * 分页查询实体数据
	 * 
	 * @param criteria
	 * @param pagination
	 * @return Pagination
	 */
	Pagination listEntities(Map<String, Object> criteria, Pagination pagination);
	
	/**
	 * 分页查询实体数据-列表页面用
	 * 
	 * @param criteria
	 * @param pagination
	 * @return Pagination
	 */
	Pagination getListEntities(Map<String, Object> criteria, Pagination pagination);
	
	/**
	 * 查询单条数据
	 * 
	 * @param criteria
	 * @return CourseTemplate
	 */
	CourseTemplate findEntity(Map<String, Object> criteria);
	
	/**
	 * 保存数据
	    * @Title: saveOrUpdateEntity
	    * @param @param entity    参数
	    * @return void    返回类型
	    * @throws
	 */
	void saveOrUpdateEntity(CourseTemplate entity,String courseTemplateIdOld);
	
	/**
	 * 删除科目模板数据
	    * @Title: deleteTemplate
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deleteTemplate(Map<String, Object> criteria);
	
	/**
	 * 删除模板区域数据
	    * @Title: deleteAreaEntity
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void deleteAreaEntity(Map<String, Object> criteria);
	/**
	 * 删除模板区域题目数据
	 * @Title: deleteTmxxEntity
	 * @param @param criteria    参数
	 * @return void    返回类型
	 * @throws
	 */
	void deleteTmxxEntity(Map<String, Object> criteria);
	
	/**
	 * 更新截图区域坐标信息
	    * @Title: updateAreaPos
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updateAreaPos(Map<String, Object> criteria);
	
	/**
	 * 根据学校查询考试批次数据
	    * @Title: getExamBatchs
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> getExamBatchs(Map<String, Object> criteria);
	
	/**
	 * 根据学校考试批次查询年级数据
	    * @Title: getExamGradeByBatch
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> getExamGradeByBatch(Map<String, Object> criteria);
	
	/**
	 * 根据学校考试年级查询考试科目数据
	    * @Title: getExamCourseByGrade
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> getExamCourseByGrade(Map<String, Object> criteria);
	
	/**
	 * 查询已设置的模板区域集合
	    * @Title: getCourseTemplateAreaList
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<CourseTemplateArea>    返回类型
	    * @throws
	 */
	List<CourseTemplateArea> getCourseTemplateAreaList(Map<String, Object> criteria);
	
	/**
	 * 查询模板区域数据
	    * @Title: getTemplateAreaMap
	    * @param @param criteria
	    * @param @return    参数
	    * @return Map<String,CourseTemplateArea>    返回类型
	    * @throws
	 */
	Map<String,CourseTemplateArea> getTemplateAreaMap(Map<String,Object> criteria);
	
	/**
	 * 查询截图区域大题号是否存在
	    * @Title: checkThExistsForArea
	    * @param @param criteria
	    * @param @return    参数
	    * @return boolean    返回类型
	    * @throws
	 */
	boolean checkThExistsForArea(Map<String, Object> criteria);
	
	/**
	 * 查询题目区域小题号是否存在
	    * @Title: checkThExistsForTmxx
	    * @param @param criteria
	    * @param @return    参数
	    * @return boolean    返回类型
	    * @throws
	 */
	boolean checkThExistsForTmxx(Map<String, Object> criteria);
	
	/**
	 * 查询单选题起始题号是否存在
	    * @Title: checkQsthExistsForArea
	    * @param @param criteria
	    * @param @return    参数
	    * @return boolean    返回类型
	    * @throws
	 */
	boolean checkQsthExistsForArea(Map<String, Object> criteria);
	
	/**
	 * 查询模板设定区域单条数据
	 * 
	 * @param criteria
	 * @return CourseTemplateArea
	 */
	CourseTemplateArea findAreaEntity(Map<String, Object> criteria);
	
	/**
	 * 查询模板设定区域题目信息数据
	    * @Title: getTmxxListEntities
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<CourseTemplateTmxx>    返回类型
	    * @throws
	 */
	List<CourseTemplateTmxx> getTmxxListEntities(Map<String, Object> criteria);
	
	/**
	 * 更新考号采集记录填涂区大小
	    * @Title: updateKhttcjAreaInfo
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updateKhttcjAreaInfo(Map<String, Object> criteria);
	
	/**
	 * 新增小题目信息
	    * @Title: insertMoreTmxx
	    * @param @param tmxxList    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertMoreTmxx(List<Map<String,Object>> tmxxList);
	
	/**
	 * 更新小题目信息
	    * @Title: updateTmxx
	    * @param @param map    参数
	    * @return void    返回类型
	    * @throws
	 */
	void updateTmxx(Map<String,Object> map);
	
	/**
	 * 保存截图信息
	    * @Title: insertArea
	    * @param @param criteria    参数
	    * @return void    返回类型
	    * @throws
	 */
	void insertArea(Map<String, Object> criteria);
	
	/**
	 * 更新截图信息
	 * @Title: updateArea
	 * @param @param criteria    参数
	 * @return void    返回类型
	 * @throws
	 */
	void updateArea(Map<String, Object> criteria);
	
	/**
	 * 查询模板划定区域信息
	    * @Title: queryCourseTemplateArea
	    * @param @param criteria
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String,Object>> queryCourseTemplateArea(Map<String, Object> criteria);
	
	/**
	 * 获取模板集合
	    * @Title: getTemplateList
	    * @param @param criteria
	    * @param @return    参数
	    * @return Map<Integer,String>    返回类型
	    * @throws
	 */
	Map<Integer,String> getTemplateList(Map<String,Object> criteria);
	
	/**
	 * 查询科目模板设置信息
	    * @Title: getTemplateParams
	    * @param @param criteria
	    * @param @return    参数
	    * @return Map<String,Map<String,CourseTemplateArea>>    返回类型
	    * @throws
	 */
	Map<String,Map<String,CourseTemplateArea>> getTemplateParams(Map<String, Object> criteria);
}
